﻿(function () {
    jQuery.fn.validate_ = function (event, options) {
        //event是指主元素通过什么事件触发数据验证的
        var self = $(this); //主元素
        self.bind(event, function () {
            var fnError; //function(error, element)
            var isValidate = true; //标记是否在客户端验证通过
            if (options["errorPlacement"]) {
                fnError = options["errorPlacement"];
            }
            if (options["rules"]) {
                var rules = options["rules"];
                for (var rule in rules) {
                    var error = $("<span></span>"); //错误信息
                    var element = $(rule); //被验证的文本框
                    var attr = rules[rule];
                    var name = "此文本";
                    if (attr["name"]) {
                        name = attr["name"];
                    }
                    if (attr["minlength"]) {
                        if (element.val().length == 0) {
                            error.text(name + "长度请不为空");
                        } else if (element.val().length < attr["minlength"]) {
                            error.text(name + "长度请大于或等于" + attr["minlength"]);
                        }
                    }
                    if (attr["maxlength"]) {
                        if (element.val().length > attr["maxlength"]) {
                            error.text(name + "长度请小于或等于" + attr["maxlength"]);
                        }
                    }
                    if (attr["length"]) {
                        if (element.val().length != attr["length"]) {
                            error.text(name + "长度请等于" + attr["length"]);
                        }
                    }
                    if (attr["style"]) {
                        if (attr["style"] == "num") {
                            var regex = /^[0-9]+$/;
                            if (!regex.test(element.val())) {
                                error.text(name + "请由数字组成");
                            }
                        } else if (attr["style"] == "letter") {
                            var regex = /^([a-z]|[A-Z])+$/;
                            if (!regex.test(element.val())) {
                                error.text(name + "请由字母组成");
                            }
                        } else if (attr["style"] == "letterNum") {
                            var regex = /^([0-9]|[a-z]|[A-Z])+$/;
                            if (!regex.test(element.val())) {
                                error.text(name + "请由字母或数字组成");
                            }
                        }
                    }
                    fnError(error, element);
                    if (error.text() != "") {
                        isValidate = false;
                        return false; //去掉此项可以显示所有验证信息
                    }
                }
            }
            if (options["ajax"]) {
                if (isValidate == true) {
                    var ajax = options["ajax"];
                    $.post(ajax["goal"], ajax["param"], ajax["callBack"]);
                }
            }
        });
    }
})(jQuery);